<?php

/**
 * carrito actions.
 *
 * @package    cometa
 * @subpackage carrito
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class carritoActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {

  }
  
  public function executeAgregarCarrito(sfWebRequest $request)
  {
      $idProducto = $request->getParameter('idDocumento');
      $this->agregarProductoCarrito($idProducto, 1);
      $this->redirect('@carrito');
  }
  
  public function executeAgregarFavorito(sfWebRequest $request)
  {
      $idProducto = $request->getParameter('idDocumento');
      $this->agregarFavorito($idProducto, 1);
      return sfView::NONE;
  }
  
  public function executeEliminarDetalle(sfWebRequest $request)
  {
      $idProducto = $request->getParameter('idDocumento');
      $this->deleteDetalle($idProducto);
      $this->redirect('@carrito');
  }
  
  
  
  public function deleteDetalle($idProducto)
   {
    
       $list = $this->getUser()->getAttribute("s_carrito",null);
        $clave          = -1; 
       if($list!=null)
       {         
            while ($row = current($list))
            {
                if ($row['objeto']->getId()==$idProducto)
                {
                    $clave =  key($list);
                    break;
                }              
                next($list);
            }                
            if($clave!=-1)
            {
                unset($list[$clave]);
                if(count($list)==0)
                {
                    $this->getUser()->setAttribute("s_carrito",null);     
                }
                else
                {
                   $this->getUser()->setAttribute("s_carrito",$list);    
                }                
            }                     
       }
       
  }
  
  public function agregarProductoCarrito($idProducto,$cantidad=1)
    {  
          $arrayRespuesta = array("success"=>false,"mensaje"=>"","objecto"=>null);           
          $productoBean = DocumentoPeer::retrieveByPK($idProducto);
          /*obetener el auto(objecto)*/
          if(is_object($productoBean))
          {
               
                  /* obtengo la lista anterior */
                   $list = $this->getUser()->getAttribute("s_carrito",null);
                   $id   = 1;
                  /* si la lista es nula se asigna el primer valor */
                  $repetido = false;
                  /*queire decir que ya existe session*/
                  if($list!=null)
                  {
                     $result   = array_reverse($list);
                     $id       = $result[0]['id']+1;

                      foreach($list as $row)
                      {
                           if($row['objeto']->getId()==$idProducto)
                            {
                               $repetido =true;
                            }
                      }
                  }
                  /*Agrego Producto al carrito*/
                  if($repetido==false)
                  {
                      
                         $newArray = array("id"=>$id,"objeto"=>$productoBean,"cantidad"=>$cantidad);
                         $list[]   = $newArray;
                         $arrayRespuesta['mensaje'] = "Se agrego el producto con exito";
                         $arrayRespuesta['success'] = true;                       
                  }
                  else
                  {
                      $arrayRespuesta['mensaje'] = "El producto ya se encuentra en el carrito";
                  }

                  $this->getUser()->setAttribute("s_carrito",$list);    
                             
          }
          else
          {
                  $arrayRespuesta['mensaje'] = "El producto no existe";
          }           
          return $arrayRespuesta;
    }
    
    
    
    public function agregarFavorito($idProducto)
    {  
          $arrayRespuesta = array("success"=>false,"mensaje"=>"","objecto"=>null);           
          $productoBean = DocumentoPeer::retrieveByPK($idProducto);
          /*obetener el auto(objecto)*/
          if(is_object($productoBean))
          {
               
                  /* obtengo la lista anterior */
                   $list = $this->getUser()->getAttribute("s_favorito",null);
                   $id   = 1;
                  /* si la lista es nula se asigna el primer valor */
                  $repetido = false;
                  /*queire decir que ya existe session*/
                  if($list!=null)
                  {
                     $result   = array_reverse($list);
                     $id       = $result[0]['id']+1;

                      foreach($list as $row)
                      {
                           if($row['objeto']->getId()==$idProducto)
                            {
                               $repetido =true;
                            }
                      }
                  }
                  /*Agrego Producto al carrito*/
                  if($repetido==false)
                  {
                      
                         $newArray = array("id"=>$id,"objeto"=>$productoBean);
                         $list[]   = $newArray;
                         $arrayRespuesta['mensaje'] = "Se agrego el producto con exito";
                         $arrayRespuesta['success'] = true;                       
                  }
                  else
                  {
                      $arrayRespuesta['mensaje'] = "El producto ya se encuentra en el carrito";
                  }

                  $this->getUser()->setAttribute("s_favorito",$list);    
                             
          }
          else
          {
                  $arrayRespuesta['mensaje'] = "El producto no existe";
          }           
          return $arrayRespuesta;
    }
  
}
